{
 "cells": [
  {
   "cell_type": "markdown",
   "metadata": {
    "collapsed": true
   },
   "source": [
    "# 成为时代的弄潮儿，不做局外人\n",
    "AIOT时代已经来临，但我们该如何深入其中呢？如何不断地提升自己技能的层次，不被时代淘汰了？That's a good question.\n",
    "\n",
    "站在AIOT的山脚下，抬头望去，高耸入云的山峰，从山脚下根本望不到顶峰。必然会发出，路在何方的感叹！的确，路在何方呢？\n",
    "\n",
    "作为一名嵌入式世界里的老鸟，有义务、有责任带领新手们一起攀登这座高山，我已经走过的弯路，可以带领大家避开；但毕竟我也在攀登的途中，对于没走过的路，我也会先行探路，分享出我的经验教训。\n",
    "\n",
    "全部旅程我准备按照如下路线，带领各位攀登这座高山、欣赏途中的美景。\n",
    "\n",
    "(1)用python开始我们的旅程，使用python简单、快速、形象的理解操作系统为我们提供了便利，如何使用多任务、如何指挥他们协同工作；同时借用树莓派和NXEZ扩展模块，通过led灯、温度传感器、数码管等形象的展示出来；然后，咱们利用RPi模块，初探python库是如何使用操作系统提供的API(操作系统以c语言方式提供API接口)；最后，简单介绍深度学习包含哪些方面的工作，并在树莓派上使用tensorflowlite使用深度学习来进行图像分裂。在获取树莓派4B和Movidius2神经网络棒后，完成具有实用价值的给予树莓派+Movidius2嵌入式深度学习目标识别系统，使用的网络模型为yolo（后面准备使用fpga来实现yolo网络）。\n",
    "\n",
    "(2)用C语言继续向上攀登，掌握C语言的基本语法、同时我会将C语言的核武器——指针传授给大家，指针是向上继续攀登探索内核必备核武器；然后，按照与python之旅相同的思路，使用C语言理解操作系统提供的工具，并深入解析python库使用操作系统提供的API；最后，咱们分析下yolo作者分享的yolo开源的c语言版网络分析计算过程，逐层讲解模型和参数，为后面使用HLS在ZYNQ上用硬件实现做准备。\n",
    "\n",
    "(3)有了python和c语言从应用层看操作系统的实践经验，咱们基本明白了操作系统给我们提供哪些服务，下面让我们继续攀登，探索linux内核。这部分会一起欣赏内核中内核驱动和系统调用接口两部分，看看内核如果操作led灯、温度传感器、数码管等外设，如何给应用程序提供系统调用接口，系统调用接口与API什么关系，我们该如果定制自己的内核驱动；同时，咱们看看内核如何使用c语言实现面向对象的思想。\n",
    "\n",
    "(4)欣赏完内核驱动后，咱们继续前行，进入到内核核心区域，这里有进程管理、内存管理、虚拟文件系统、网络协议栈四个著名风景区，我会主要讲解进程管理、网络协议栈两部分，概要讲解内存管理、虚拟文件系统；这里我们换个角度，从算法角度，看看散列表、二叉树、B+树等如何在内核中应用，激发咱们对算法的兴趣。其中，我会带大家完整的从应用层api到tcp/ip协议栈再到网卡驱动近距离的走一遍，看看无处不在的网络是什么样子的。\n",
    "\n",
    "(5)参观完cpu端的部分美景后，估计你具备了自行浏览cpu端其他景点的能力，这里你需要博览群书，整理出自己的cpu端体系架构；我的感受就是，看到一片处理器，我看到的是第一层cpu通过片上总线协调各外设工作；第二层内核定时进行进程管理、内存回收等工作，同时将外设中的数据放到内存中，唤醒相应进程工作；第三层，进程按照用户的意愿进行工作，如果需要协调，则想内核发送报告，内核负责对通信和同步。\n",
    "\n",
    "(6)自行参观完cpu端景点后，咱们继续前行，AIOT这座高峰就在我们前面。嵌入式出身的探索者，可以按照先PS端、然后是深度学习网络模型学习、最后是PL端学习。使用的配套硬件，准备使用sipeed公司的“荔枝糖hex zynq7020 fpga开发板”。对于PS端开发，按照树莓派的思路进行从python开始、经过c语言、内核驱动，最后是内核核心区域。\n",
    "\n",
    "(7)我们继续攀登，前面是一个完全新的领域，深度学习领域；在当前的深度学习包含三种工作：①大牛研究深度网络模型改进模型，②我们理解大牛的网络模型，利用其模型的特征提取能力，在网络输出端更改为自己的分类，然后用自己的数据集进行训练自行添加层的权重，③将已经训练好的模型，借助HLS使用FPGA实现，实现高能效计算。对于第一点，作为芸芸众生的我们恐怕功力不够，容易走火入魔；但我们可以做第二、三点工作，让深度学习移植到嵌入式端，在嵌入式端工作，让嵌入式更智能。\n",
    "\n",
    "(8)领略的深度学习的风采后，我们要借助HLS在FPGA上实现我们的网络模型，实现一个低功耗、高性能的边缘端智能处理平台，初步实现AIOT。\n",
    "\n",
    "以上是我能带领的全部旅程，当然我现在刚刚攀登到第(7)层，准备安营扎寨，细细品味眼睛的美景。我会继续努力攀登，争取早日到达第(8)层，同时与大家分享一路的风采。\n",
    "\n",
    "当然，即使到了第(8)层，还有更高的山峰在远方，我似乎能隐约看到，远方有座“数学”的高峰，平静、安详而美丽，希望此生能到达那里，摆脱具体技术的束缚，用“数学“的角度，重新理解这个世界，此生足以。"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.7.3"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 1
}
